package com.common.www.utils;


import java.util.ArrayList;
import java.util.List;

public class HexUtils {

    public static String convertStringToHex(String str) {

        char[] chars = str.toCharArray();

        StringBuffer hex = new StringBuffer();
        for (int i = 0; i < chars.length; i++) {
            hex.append(Integer.toHexString((int) chars[i]));
        }

        return hex.toString();
    }

    public static String convertHexToString(String hex) {

        StringBuilder sb = new StringBuilder();
        StringBuilder temp = new StringBuilder();

        //49204c6f7665204a617661 split into two characters 49, 20, 4c...
        for (int i = 0; i < hex.length() - 1; i += 2) {

            //grab the hex in pairs
            String output = hex.substring(i, (i + 2));
            //convert hex to decimal
            int decimal = Integer.parseInt(output, 16);
            //convert the decimal to character
            sb.append((char) decimal);

            temp.append(decimal);
        }

        return sb.toString();
    }
    /**
     * 十六精致字符转10进制
     */
    public static byte[] hexString2Dec(String src) {
        //去空格后两两拆开
        src = src.replace(" ", "");
        List<String> hexList = new ArrayList<>();
        for (int i = 0; i < src.length(); i++) {
            if (i % 2 == 0) {
                hexList.add(src.substring(i, i + 2));
            }
        }

        byte[] bytes = new byte[hexList.size()];
        for (int i = 0; i < hexList.size(); i++) {
            byte[] res = HexDecoder.decodeHex(hexList.get(i).toCharArray());
            bytes[i] = res[0];
        }
        return bytes;
    }
//    //504F533838383834  POS88884
//    public static void main(String[] args) {
//
//        StringToHex strToHex = new StringToHex();
//        System.out.println("\n-----ASCII码转换为16进制 -----");
//        String str = "POS88884";
//        System.out.println("字符串: " + str);
//        String hex = strToHex.convertStringToHex(str);
//        System.out.println("转换为16进制 : " + hex);
//
//        System.out.println("\n***** 16进制转换为ASCII *****");
//        System.out.println("Hex : " + hex);
//        System.out.println("ASCII : " + strToHex.convertHexToString(hex));
//    }
}